package com.example.laixunlong;

import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;

import android.app.Activity;
import android.content.ComponentCallbacks;
import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import com.example.laixunlong.control.Activity_lifecycle;
import com.example.laixunlong.control.AlertDialog_duihua;
import com.example.laixunlong.control.Background_beijing;
import com.example.laixunlong.control.BoxRadioSwitch_xuankuang;
import com.example.laixunlong.control.Button_anniu;
import com.example.laixunlong.control.EditText_shuru;
import com.example.laixunlong.control.FileInOutPut_shujvcunchu;
import com.example.laixunlong.control.GridView_biaoge;
import com.example.laixunlong.control.ImageView_tupian;
import com.example.laixunlong.control.Layout_bujv;
import com.example.laixunlong.control.ListView_biaodan;
import com.example.laixunlong.control.Notification_tongzhi;
import com.example.laixunlong.control.PopupWindow_tanchuang;
import com.example.laixunlong.control.PowerGain_quanxian;
import com.example.laixunlong.control.ProgressBar_jindutiao;
import com.example.laixunlong.control.ResourceFile_ziyuan;
import com.example.laixunlong.control.Spinner_xiala;
import com.example.laixunlong.control.SystemApp_xitong;
import com.example.laixunlong.control.TextView_wenben;
import com.example.laixunlong.control.Toolbar_dingbu;

public class MainActivity extends AppCompatActivity {
    private ActivityResultLauncher<Intent> pag;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        /*log提示工具,用于打印信息,内部参数为两个,第一个表示标签,第二个表示内容.标签用于信息过滤
            .e :提示错误信息,可能使程序崩溃
            .w :提示警告信息,
            .i :提示一般信息
            .d :提示调试信息,
            .v :提示冗余信息*/
        Log.d("打印","hello world");
        /*安卓app是通过xml描绘界面,以代码书写逻辑,即高级语言将其实现的复式开发模式*/
        /*通过id获取控件*/
        //1,通过静态方法获取,该方法位于AppCompatActivity中,获取后把它当成一个普通实例.
        //TextView txt_1= findViewById(R.id.txt_1);
        //因为代码赋值晚于xml,所有会将其覆盖.
        //txt_1.setText("重新赋值的内容");

        /*下面会有各种学习用方法,为了方便实例载入,在此处设置所有全局变量的实例*/



//页面间传递数据
        /* 单向和双向的传递方式不同,使用两种不同的跳转方式:
            startActivity(intent);                          单向
            ActivityResultLauncher<Intent>.launch(intent)   双向
        下文为双向数据传递时,返回当前页面的数据接收方式,双向传递的跳转方式请看下文显示意图tp4
        创建当前页面的返回事件,因为每次加载此页面都会触发该方法,因此需要进行非空判定*/
        pag=registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
            @Override
            public void onActivityResult(ActivityResult result) {
                Log.e("extends","返回事件触发");
                if(result!=null)//判断返回动作不为空
                {
                    Intent intent=result.getData();
                    if(intent!=null&&result.getResultCode()== Activity.RESULT_OK)//判断返回数据不为空
                    {
                        Bundle bundle = intent.getExtras();
                        String txt1=bundle.getString("txt2");
                        Toast.makeText(MainActivity.this,txt1+"",Toast.LENGTH_SHORT).show();//显示出回传数据
                    }
                }
            }
        });

    }
/*跳转页面*/
    public void tiaozhuan(View v)
    {
    //显示意图
        tiaozhuan_Explicit();
    //隐式意图
        //tiaozhuan_Implicit();
    }
    //显式意图
    public void tiaozhuan_Explicit()
    {
        /*tp1:  创建意图Intent
            除了直接通过构造函数赋值跳转目标,还可以通过属性赋值的方法:
            ComponentName c=new ComponentName(this,Activity_lifecycle.class);
            或  ComponentName c=new ComponentName("packagename","classname");//此方法能跳转到其他应用
            intent.setComponent(c);
        */
        Intent intent=new Intent(this, Activity_lifecycle.class);

        /*tp2:  设置跳转标签
            不同的启动标签通过按位"或"运算符进行链接
            FLAG_ACTIVITY_CLEAR_TOP     开启一个新的任务栈,栈中只有跳转对象一个实例,如果再次跳转到上一个页面,则会重新启动上一个回话,而不会创建新的实例,防止重复返回的情况
            FLAG_ACTIVITY_SINGLE_TOP    如果跳转对象在栈顶,则不再创建实例
            FLAG_ACTIVITY_NEW_TASK      开启一个新的任务栈
            FLAG_ACTIVITY_CLEAR_TASK    跳转后,跳转对象下的所有对象
            FLAG_ACTIVITY_NO_HISTORY    创建临时会话,再次跳转后销毁,不会返回到源页面
        */

        /*tp3:  设置页面间单向传递数据,全局静态类型Bundle
            Bundle bundle=new Bundle();//创建
            bundle.putString("txt1","阿巴巴巴叭叭叭叭叭叭吧");//传值
            intent.putExtras(bundle);//放入意图
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
        */

        /*tp4:  设置可回传的传递数据,
            Bundle bundle=new Bundle();//创建
            bundle.putString("txt1","阿巴巴巴叭叭叭叭叭叭吧");//传值
            intent.putExtras(bundle);//放入意图
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            pag.launch(intent);
        */
        Bundle bundle=new Bundle();//创建
        bundle.putString("txt1","阿巴巴巴叭叭叭叭叭叭吧");//传值
        intent.putExtras(bundle);//放入意图
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        pag.launch(intent);
    }
    //隐式意图,一般用于隐藏跳转意图
    public void tiaozhuan_Implicit()
    {
        /*通过设置页面静态常量,让系统自己在全局Activity遍历查找,一般一部手机只有3000个页面,因此遍历时间不会超过100ms,但响应速度需要具体情况分析
        * 就算设置的为同一个常量,android系统也会弹出选择使用哪个应用打开*/
        /*常见的意图常量
            ACTION_MAIN:回到主页
            ACTION_VIEW:app详情页
            ACTION_SEND:打开分享窗
            ACTION_CALL:直接拨号
            ACTION_DIAL:准备拨号
            ACTION_SENDTO:发送短信
            ACTION_ANSWER:接听电话
          自定义的隐式常量:需要到页面配置文件中"AndroidManifest.xml中设置"
        */
        Intent i=new Intent();

        /*应用外页面
        i.setAction(Intent.ACTION_DIAL);
        Uri uri= Uri.parse("tel:123456");//设置传输过去的数据
        i.setData(uri);
        startActivity(i);
        应用内页面

        */
        i.setAction("android.intent.action.LIFECYCLE");
        i.addCategory(Intent.CATEGORY_DEFAULT);
        startActivity(i);
    }












    public void goto_TextView(View v)
    {/*文本框*/
        startActivity(new Intent(this, TextView_wenben.class));
    }
    public void goto_Button(View v)
    {/*按钮控件*/
        startActivity(new Intent(this, Button_anniu.class));
    }
    public void goto_EditText(View v)
    {/*输入框*/
        startActivity(new Intent(this, EditText_shuru.class));
    }
    public void goto_ProgressBar(View v)
    {/*进度条*/
        startActivity(new Intent(this, ProgressBar_jindutiao.class));
    }
    public void goto_ImageView(View v)
    {/*图片*/
        startActivity(new Intent(this, ImageView_tupian.class));
    }
    public void goto_Notification(View v)
    {/*通知信息*/
        startActivity(new Intent(this, Notification_tongzhi.class));
    }
    public void goto_Toolbar(View v)
    {/*顶部栏目*/
        startActivity(new Intent(this, Toolbar_dingbu.class));
    }
    public void goto_AlertDialog(View v)
    {/*对话框*/
        startActivity(new Intent(this, AlertDialog_duihua.class));
    }
    public void goto_PopupWindow(View v)
    {/*弹窗*/
        startActivity(new Intent(this, PopupWindow_tanchuang.class));
    }
    public void goto_Layout(View v)
    {/*布局*/
        startActivity(new Intent(this, Layout_bujv.class));
    }
    public void goto_Background(View v)
    {/*背景*/
        startActivity(new Intent(this, Background_beijing.class));
    }
    public void goto_BoxRadioSwitch(View v)
    {/*背景*/
        startActivity(new Intent(this, BoxRadioSwitch_xuankuang.class));
    }
    public void goto_Event(View v)
    {/*按钮事件*/
        startActivity(new Intent(this, ButtonEvent_explain.class));
    }
    public void goto_Resource(View v)
    {/*资源文件*/
        startActivity(new Intent(this, ResourceFile_ziyuan.class));
    }
    public void goto_FileInoutput(View v)
    {/*数据存储*/
        startActivity(new Intent(this, FileInOutPut_shujvcunchu.class));
    }
    public void goto_PowerGain(View v)
    {/*权限获取*/
        startActivity(new Intent(this, PowerGain_quanxian.class));
    }
    public void goto_SystemApp(View v)
    {/*系统应用*/
        startActivity(new Intent(this, SystemApp_xitong.class));
    }
    public void goto_Spinner(View v)
    {/*下拉列表*/
        startActivity(new Intent(this, Spinner_xiala.class));
    }
    public void goto_ListView(View v)
    {/*表单控件*/
        startActivity(new Intent(this, ListView_biaodan.class));
    }
    public void goto_GridView(View v)
    {/*表格控件*/
        startActivity(new Intent(this, GridView_biaoge.class));
    }


}